//promise是ES6提供原生对象,构造函数，可以获取异步操作的信息

//

// ajax({
//     url:'/api/getUid',
//     success:function(res){
//         uid = res.data.uid;
//         ajax({
//             url:'/api/billList?uid='+uid,
//             success:function(res){
//                 render();

//                 ajax({
//                     success:function(){
//                         ajax({

//                         })
//                     }
//                 })
//             }
//         })
//     }
// })

//ajax  setTimeout  fs img


// let p = new Promise((resolve,reject) => {

//     //resolve 成功的回调  reject失败的回调
//     setTimeout(() => {
//         let status = 1;
//         if(status === 1){
//             resolve('成功')
//         }else{
//             reject('失败')
//         }
//     },1000)
// }).then((res) => {
//     //成功的回调函数
//     console.log(res)
// }).catch((error) => {
//     console.log(error)
// }).finally(() => {
//     console.log('finally')
// })


// function PromiseA(fun){
//     this.ck = fun;
// }

// PromiseA.prototype.then = (resolve,reject) => {
//     this.ck(resolve,reject)
// }

// new PromiseA((resolve,reject) => {
//     //....异步操作
//     //成功
//     // resolve('成功')

//     //失败
//     // reject('失败信息');

// }).then((res) => {
//     //成功

// },(error) => {
//     //失败

// })

// Promise.prototype.then = () => {
    
// }

// Promise.prototype.catch = () => {

// }

//图片加载

function loadImg(url){
    return new Promise((resolve,reject) => {
        let img = new Image();
        img.src = url;
        img.onload = () => {
            resolve(img);
        }

        img.onerror = () => {
            reject(new Error('此图片不存在'))
        }
    })
}

loadImg('https://www.baidu.com/img/superlogo_c4d7df11110a003d3db9b65e9ef0fe6da1ec.png?where=super232323').then((img) => {
    document.body.appendChild(img);
}).catch((error) => {
    console.warn(error);
})


function ajax(url){
    return new Promise((resolve,reject) => {
        let xhr = new XMLHttpRequest();
        xhr.open('GET',url);
        xhr.send(null);
        xhr.onreadystatechange = () => {
            if(xhr.readyState != 4)return;
            if(xhr.status === 200){
                resolve(xhr.responseText)
            }else{
                reject(new Error('error'))
            }
        }
    }) 
}

//promise把异步操作以同步流程的方式写出来

// ajax('/api/getuid').then((res) => {
//     console.log(res);
//     let uid = JSON.parse(res).uid;
//     return ajax('/api/list?uid='+uid)
// }).then((list) => {
//     console.log(list);
// }).catch((error) => {
//     console.warn(error)
// })

//Prmise.all([p1,p2....]) 

Promise.all([ajax('/api/banner'),ajax('/api/list2')]).then((res) => {
    console.log(res); //[banner,list]
}).catch(error => {
    console.log(error)
})

// Promise.resolve()    

let p1 = Promise.reject('foo');

console.log(p1);

p1.then((res) => {
    console.log(res);
},(error) => {
    console.log(error);
})

//promise内部三种状态：pendding (进行中)  fulfilled(成功)  rejected （失败）

//pendding --->  fullfilled  

//pendding --->  rejected

















 





























